const Koa = require("koa");
const KoaRouter = require("koa-router");
const bodyparser = require("koa-bodyparser");

const app = new Koa();
const router = new KoaRouter();

const query = require("./mysql");

app.use(bodyparser());

// 添加文章接口
router.post("/articles", async (ctx) => {
    // 接收参数，bodyparser 引入了？
    const { title, content } = ctx.request.body;
    console.log({ title, content });
    // 插入数据库 需要 insert into
    query("insert into article (title, content) values (?, ?)", [
        title,
        content,
    ]);
    ctx.body = "1232";
});

// 读取文章列表
router.get("/articles", async (ctx) => {
    // 如果前端传入参数，一般都是查询参数
    const { pagenum, pagesize } = ctx.query;
    // 计算分页的公式，分页需要使用 sql 的 limit 语法，他需要分页的起始位置，和查询条数
    // 起始位置计算公式
    const startIndex = (pagenum - 1) * pagesize;
    const res = await query("select * from article");

    // // 分页 SQL
    // const list = await query("select * from article limit ?, ?", [
    //     startIndex,
    //     Number(pagesize),
    // ]);
    // // 计算总条数
    // const tiaoshu = await query("select count(*) as count from article");
    // console.log(tiaoshu);
    // const total = tiaoshu[0]["count"];

    // 查询 SQL => select
    ctx.body = {
        code: 200,
        data: res,
        message: "请求成功",
    };
});

router.put("/articles/:id", async (ctx) => {
    // 获取这个路径参数
    const { id } = ctx.params;
    // 修改的内容，我们就在请求体里面传入
    const { title, content } = ctx.request.body;
    // 执行修改 SQL => update
});

router.delete("/articles/:id", async (ctx) => {
    // 获取这个路径参数
    const { id } = ctx.params;
    // 执行删除 SQL => delete
});

router.get("/articles/tab", async (ctx) => {
    // select
    const res = await query("select ditinct fenlei from article");
    console.log("res", res);
});

app.use(router.routes());

app.listen(3000, () => {
    console.log("Koa 服务器已启动，请访问：http://localhost:3000");
});
